Dalam Ruby, pemanggilan metode bukanlah lompatan statis ke alamat memori; melainkan sebuah peristiwa pengiriman pesan. Saat Anda memanggil metode, Anda mengirim pesan ke Penerima. Pesan ini terdiri dari nama metode, argumen opsional, dan kemungkinan Asosiasi Blok.
1. Sintaks Panggilan & Ambiguitas
Ruby memberikan fleksibilitas besar: Foo.Bar dan Foo.Bar() adalah identik. Namun, Foo::Bar biasanya merujuk pada konstanta, sedangkan Foo::Bar() memaksa pemanggilan metode. Tanda kurung sering dihilangkan untuk menciptakan pengalaman seperti DSL di mana metode tampak seperti properti.
2. Dekonstruksi Operator
Operator sebenarnya adalah Metode yang Dapat Didefinisikan Ulang. Ekspresi expr1 + expr2 adalah gula bagi (expr1).+(expr2). Ini berlaku untuk unary (-obj), biner (a < b), dan operator akhiran.
3. Mekanisme yield
Metode menggunakan yield untuk mendorong alur kontrol ke blok terkait. Dengan menggunakan Kernel.block_given?, metode dapat menentukan secara dinamis bagaimana menangani logika berdasarkan konteks pemanggil.